package xyz.tanxiao.query;

import org.springframework.format.annotation.DateTimeFormat;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 查询条件注解
 *
 * @author 万成波
 * @email 2300064869@qq.com
 * @createTime 2024-09-10 15:33:50 星期二
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Condition {

	/**
	 * 查询条件类型
	 */
	ConditionType type() default ConditionType.EQ;

	/**
	 * 数据表列名
	 * 当参数类属性名称和数据表列表不一致时，可以设置数据表实际的列名。
	 */
	String columnName() default "";

	/**
	 *
	 * 日期时间格式
	 * 格式化格式，普通等值查询只会格式化属性值不会格式化对应的表字段，如果是
	 * between 和 not between 查询会同时格式化对应的表字段。
	 */
	String format() default "";

	/**
	 * 是否是范围查询的另外一个配合属性，如何设置为 true 则这个查询条件不会被处理。
	 */
	boolean betweenSlave() default false;

	/**
	 * 范围查询组名称 (范围查询时两个属性的组名称需要保持一致)
	 */
	String betweenGroup() default "";

	/**
	 * 属性排序的顺序优先级
	 */
	int sortOrder() default 0;

}
